package br.estacio.contatos.server.service;

import java.util.ArrayList;
import java.util.List;

import br.estacio.contatos.server.assembler.ContatoEntityObjectAssembler;
import br.estacio.contatos.server.assembler.EntityObjectAssembler;
import br.estacio.contatos.shared.Contato;

import com.google.appengine.api.datastore.DatastoreService;
import com.google.appengine.api.datastore.DatastoreServiceFactory;
import com.google.appengine.api.datastore.Entity;
import com.google.appengine.api.datastore.Query;

public class DefaultContatoService implements ContatoService {
	
	private EntityObjectAssembler<Contato> contatoAssembler = new ContatoEntityObjectAssembler();
	private DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();

	@Override
	public Contato inserirOuAtualizar(Contato contato) {
		Entity entity = contatoAssembler.toEntity(contato);
		datastore.put(entity);
		return contatoAssembler.toObject(entity);
	}

	@Override
	public List<Contato> listarTodos() {
		
		List<Contato> todos = new ArrayList<Contato>();
		
		for (Entity entity : datastore.prepare(new Query("Contato")).asIterable()) {
			todos.add(contatoAssembler.toObject(entity));
		}
		
		return todos;
	}
	

}
